/*
 * VisualizaContatoPresenter.java
 * Versão: 1.0
 * Data de Criação: 10/09/2014
 * Copyright(c) Felipe Secato.  Todos os direitos reservados.
 */
package contatos.presenter;

import contatos.model.Contato;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/**
 * Presenter responsavel por alterar um contato
 *
 * @author felipe secato
 * @version 1.0
 * @see ManterContatoPresenter
 */
public class VisualizaContatoPresenter extends ManterContatoPresenter {
    
    private final Contato contato;
    
    public VisualizaContatoPresenter(Contato c) {
        
        super();
        contato = c;

        //desabilitando os campos
        view.getTxtNome().setEnabled(false);
        view.getTxtTelefone().setEnabled(false);
        view.getTxtOperadora().setEnabled(false);
        view.getTxtUF().setEnabled(false);
        view.getBtnSalvar().setEnabled(false);
        
        //carregando os campos com os dados da pessoa a ser alterada
        view.getTxtNome().setText(c.getNome());
        view.getTxtTelefone().setText(c.getTelefone());
        view.getTxtOperadora().setText(c.getOperadora());
        view.getTxtUF().setText(c.getUf());

        //desabilitando o botao de salvar
        view.getBtnSalvar().setEnabled(false);

        //mostrando o botao de editar
        view.getBtnEditar().setVisible(true);

        //listener do editar
        view.getBtnEditar().addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                editarContato();
            }
        });
        
        view.setVisible(true);
    }
    
    @Override
    void manterPessoa() {
        String nome = view.getTxtNome().getText();
        String telefone = view.getTxtTelefone().getText();
        String operadora = view.getTxtOperadora().getText();
        String uf = view.getTxtUF().getText();
        try {
            boolean alterou = contatos.alterar(contato, nome, telefone, operadora, uf);
            if (!alterou) {
                JOptionPane.showMessageDialog(view, "Não foi possível alterar o contato");
            } else {
                view.setVisible(false);
                view.dispose();
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(view, ex.getMessage());
        }
        
    }
    
    public void editarContato() {
        //habilitando os campos
        view.getTxtNome().setEnabled(true);
        view.getTxtTelefone().setEnabled(true);
        view.getTxtOperadora().setEnabled(true);
        view.getTxtUF().setEnabled(true);
        view.getBtnSalvar().setEnabled(true);
        
        //desabilitando o botao de editar
        view.getBtnEditar().setEnabled(false);
        
        view.getTxtNome().requestFocus();
    }
    
}
